The present invention relates generally to computer systems and more particularly to the control over the usage of server software.
The network computing model, in which client computers are connected to server computers, is quickly becoming the dominant computing model for small businesses, enterprises, Intranets, the Internet, and even homes. Cost and productivity are among the primary factors driving the changeover to the client server network model. The network computing model increases productivity by permitting users to share resources, and provides cost savings by providing a centralized location for maintaining and customizing certain aspects of the computer system.
As the network computing model continues to become a dominant computing paradigm, computer networks have become an increasingly important tool for users to share access to system resources such as programs, data, printers, and so on. Typically, such sharing of resources is provided by server software that handles requests from a plurality of users. A database server is one particularly important server software application that services requests from multiple users. Indeed, the database server provides one of the fundamental building blocks to enable the network computing model in that many other server applications, such as mail servers, file servers, Internet servers, and so on, are built on top of database servers.
As noted above, the network computing model is import to many different network configurations and scales. For example, the lower end of the network configuration scale includes homes or small businesses; whereas, the higher end of the scale includes enterprises or the Internet. Although these configurations may have different scales, they each operate on a nearly identical model of a plurality of users accessing a shared resource via a server computer.
But the different configuration scales may have very different economic forces shaping their development. For example, the value of the productivity and cost reduction gains of network computing may provide enough economic incentive to the users of the high end of the configuration scale to invest in the development of sophisticated server software. On the other hand, the economics at the lower end of the scale may not provide enough economic incentive to justify development to the same extent. These differences in economic incentives have resulted in a segmented server software market.
In addition to grappling with a segmented software market, for many years software developers have attempted to control the unauthorized use and distribution of software. For example, hardware and software keys have been used to inhibit unauthorized use of software. However, with the advent of computer networks in which software is loaded from or executed on a server computer, the key approach to unauthorized software use is impractical.
Moreover, the network environment to some extent provides even greater potential than a stand-alone software application for unauthorized use because of the nature of server software usage. That is, the use of the server software may be generally authorized while the type of its use is proscribed. For example, the server software may be authorized for use with up to a fixed number of users. However, determining whether the authorized limits have been exceeded may not be apparent to the users because they would have to know how many other users are simultaneously using the same server software. As a result, in some instances the user could be unaware that the authorized use of the server software has been exceeded.
Typically, in such network distribution and execution systems, software developers have attempted to control the unauthorized use of software by limiting the number of simultaneous users. That is, after a predefined number of users simultaneously connect to the software, further connections are prohibited. However, this limit on the number of users presents drawbacks, such as prioritizing access, improperly measuring the actual number of connections, and so on. For example, if a user remains connected to the server but makes no requests of the server software, the server software still counts the user as a connection toward the maximum allowable connections, potentially preventing an otherwise authorized user from gaining access. Moreover, it could also create deadlock problems when applications require multiple connections (i.e., making a first connection and requiring an unavailable connection for the application to complete an release the first connection).
A second approach to the problem of proscribing the use of the server software is to develop a completely separate product for each segment. In this approach, a product developed for and directed at the lower end segment typically lacks the features and power of a product developed for and directed at the higher end segment. As a result, the low end product, with its sparse features and lack of performance, simply does not match the needs of the high end user. Conversely, the high end product, with its rich feature and performance set, is too expensive for the low end user. This approach requires duplication of software development time in developing and maintaining two separate products.
Thus there is a need for an improved server software system that provides scalability to different market segments while providing control over the authorized usage of the software.
The present invention is directed to a system and method for controlling usage of a particular software program in a computer network environment. The invention operates by controlling the throughput of the software as it executes on a server computer. In particular, the invention monitors the number of active requests to the software. If the number of active requests exceeds a predefined number, the software throughput on the server (e.g., requests completed per minute) is artificially restricted. As such, the present invention continues to allow further connections to the software but intentionally restricts further use by inhibiting the throughput for all connections to the software. Preferably, the present invention continues to allow the predefined number of active requests to be exceeded, but as more requests are made, the overall performance of software progressively degrades.